package semantica;


import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Set;


public class ValidAttributes {

	private Hashtable<String, TypeAttribute> type;

	public ValidAttributes() {
		type = new Hashtable<String, TypeAttribute>();
		typeToAttType();
	}

	public Set<String> getAtttype() {
		return type.keySet();
	}
	
	public TypeAttribute get(String val){
		return type.get(val);
	}
		
	private void typeToAttType(){
		ArrayList<String> colors = new ArrayList<String>();
		colors.add("black");
		colors.add("white");
		colors.add("red");
		colors.add("blue");
		colors.add("green");
		colors.add("gray");
		
		ArrayList<String> styles = new ArrayList<String>();
		styles.add("dashed");
		styles.add("dotted");
		styles.add("solid");
		styles.add("rounded");
		styles.add("diagonals");
		styles.add("filled");
		styles.add("striped");
		styles.add("wedged");
		
		ArrayList<String> shapes = new ArrayList<String>();
		shapes.add("box");
		shapes.add("triangle");
		shapes.add("circle");
		
		type.put("gbcolor", new PatternListAttributeType("#([0-9]|[a,b,c,d,e,f]){6}",colors));
		type.put("size", new QuotNumericAttributeType());
		type.put("color", new PatternListAttributeType("#([0-9]|[a,b,c,d,e,f]){6}",colors));
		type.put("fontcolor", new PatternListAttributeType("#([0-9]|[a,b,c,d,e,f]){6}",colors));
		type.put("heigth", new NumericAttributeType());
		type.put("width", new NumericAttributeType());
		type.put("image", new QuotStringAttributeType());
		type.put("label", new QuotStringAttributeType());
		type.put("style", new ListAttributeType(styles));
		type.put("shape", new ListAttributeType(shapes));
		
	}
}
